﻿/*Función genérica para el envio de peticiones Ajax type POST
callback: es el nombre de la función que recibe de los datos de la petición
errorhandler: es el nombre de la función que maneja los errores de la petición
convertJson: variable que valida si la propiedad respuesta se debe convertir a un objeto json*/
function AjaxGET(url, data, callback, errorhandler, convertJson) {
    EjecutarAjax("GET", url, data, callback, errorhandler, convertJson);
}

/*Función genérica para el envio de peticiones Ajax type POST
callback: es el nombre de la función que recibe de los datos de la petición
errorhandler: es el nombre de la función que maneja los errores de la petición
convertJson: variable que valida si la propiedad respuesta se debe convertir a un objeto json*/
function AjaxPOST(url, data, callback, errorhandler, convertJson) {
    EjecutarAjax("POST", url, data, callback, errorhandler, convertJson);
}

function EjecutarAjax(metodo, url, data, callback, errorhandler, convertJson) {
    url = "/Services/AjaxService.svc/" + url;

    if (metodo == "POST")
        data = JSON.stringify(data);

    $.ajax({
        url: url,
        dataType: 'json',
        type: metodo,
        //data: JSON.stringify(data),
        data: data,
        contentType: "application/json",
        beforeSend: function () {
            //BlockUI
        },
        success: function (res, textStatus, xhr) {
            if (res.d.TieneError) {
                if (typeof (errorhandler) == "function") {
                    return errorhandler(xhr, textStatus, errorThrown);
                }
                else {
                    ErrorAjaxPersonalizado(xhr, textStatus, errorThrown);
                }
            }
            else {
                //Valida si se debe convertir la respuesta a un objeto Json
                if (convertJson)
                    res.d.Respuesta = jQuery.parseJSON(res.d.Respuesta);

                return callback(res.d.Respuesta);
            }
        },
        error: function (xhr, textStatus, errorThrown) {

            if (typeof (errorhandler) == "function") {
                return errorhandler(xhr, textStatus, errorThrown);
            }
            else {
                ErrorAjaxPersonalizado(xhr, textStatus, errorThrown);
            }
        },
        complete: function () {
            //UnBlockUI
        }
    });
}